#pragma once

#ifndef MESSAGETYPES_H
#define MESSAGETYPES_H

const char* TRACE_TEMPLATE = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"
                             "<!DOCTYPE trace ["
                             "<!ELEMENT trace        (component, object)>"
                             "<!ELEMENT component    (filename, lineno?, executable)>"
                             "<!ELEMENT object       (class?, method)>"
                             "<!ELEMENT filename     (#PCDATA)>"
                             "<!ELEMENT lineno       (#PCDATA)>"
                             "<!ELEMENT executable   (#PCDATA)>"
                             "<!ELEMENT class        (#PCDATA)>"
                             "<!ELEMENT method       (#PCDATA)>"
                             "<!ATTLIST method event (entry | exit) #REQUIRED>"
                             "]>"
                             "<trace>"
                             "<component><filename>%s</filename><lineno>%s</lineno><executable>%s</executable></component>"
                             "<object><class>%s</class><method event=\"entry\">%s</method></object>"
                             "</trace>";

const char* ACTION_TEMPLATE = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"
                              "<!DOCTYPE action ["
                              "<!ELEMENT action        (reference, executable, name, procedure)>"
                              "<!ELEMENT reference     (id, name?)>"
                              "<!ELEMENT procedure     (step+, events?)>"
                              "<!ELEMENT events        (event+)>"
                              "<!ELEMENT step          (description, command?)>"
                              "<!ELEMENT id            (#PCDATA)>"
                              "<!ELEMENT name          (#PCDATA)>"
                              "<!ELEMENT description   (#PCDATA)>"
                              "<!ATTLIST step sequence (#PCDATA) #REQUIRED>"
                              "<!ATTLIST action cmd (create | modify | delete) #IMPLIED>"
                              "]>"
                              "<action>"
                              "<executable>%s</executable>"
                              "<name>%s</name>"
                              "<procedure>%s %s</procedure>"
                              "</action>";

const char* ACTION_STEP_TEMPLATE = "<step sequence\"%ld\">"
                                   "<description>%s</description>"
                                   "<command>%s</command>"
                                   "</step>";

const char* ACTION_EVENTS_TEMPLATE = "<events>%s</events>";




#endif
